package pedidos;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import org.junit.Before;
import org.junit.Test;

import sucursal.Stock;
import sucursal.Sucursal;
import clientes.Cliente;

/**
 * Clase test de Pedido
 * @author Stefania Lilian Chiniewicz.
 */

public class Pedidos {

	Pedido pedido;
	Stock stock;
	Cliente elQueLoHizo;
	
	@Before
	public void setUp() throws Exception {
		this.elQueLoHizo= mock(Cliente.class);
		this.stock= mock(Stock.class);
		this.pedido= new Pedido(stock, elQueLoHizo);
	}

	@Test
	public void testGetProductosDelPedido() {
		pedido.getProductosDelPedido();
		
		verify(stock,times(1)).getProductosDelStock();
	}
	
	 @Test
     public void testEstasCompleto(){
             Sucursal sucursalMock= mock(Sucursal.class);
             when(sucursalMock.puedeCubrir(stock)).thenReturn(true);
             pedido.estasCompleto(sucursalMock);
             verify(sucursalMock, times(1)).puedeCubrir(stock);
             //agregar el assert true o false.
             
     }
     //vale la pena hacer el caso false???
	//vale la pena hacer el caso false???
	
	@Test
	public void testEstasCompletoFalse(){
		Sucursal sucursalMock= mock(Sucursal.class);
		when(sucursalMock.puedeCubrir(stock)).thenReturn(false);
		
		assertFalse(pedido.estasCompleto(sucursalMock));
		verify(sucursalMock, times(1)).puedeCubrir(stock);
		//agregar el assert true o false.
		
	}

	
	@Test
	public void testGetElQueLoHizo(){
		assertEquals(elQueLoHizo, pedido.getElQueLoHizo());
	}
	
	@Test
	public void testGetPedidoSolicitado(){
		assertEquals(stock,pedido.getPedidoSolicitado());
	}
}
